#if !defined(__CLIENT_RESEAU_H)
#define __CLIENT_RESEAU_H

#include "reseau.h"
#include "emetteur.h"
#include "recepteur.h"
#include "commun/erreur.h"
#include <string>

/**
 * Classe RAII pour la connection d'un client à un serveur de la classe serveur_reseau.
 */
class client_reseau : dependant_de<reseau> { 
	// Adresses (host + port) du serveur TCP et UDP
    IPaddress adresse_serveur_, adresse_serveur_udp_;
	// Sockets TCP et UDP utilisées
    TCPsocket chaussette_tcp_; 
    UDPsocket chaussette_udp_;
	// Groupement de sockets pour la réception TCP asynchrone
    SDLNet_SocketSet paire_de_chaussettes_;
	// Objets gérant l'émission et la réception
	emetteur_reseau *emetteur_;
	recepteur_reseau *recepteur_;
public:
    client_reseau(std::string nom_serveur, int port_serveur = PORT_SERVEUR_DEFAUT);  
    ~client_reseau() throw() { detruire(); }
	void detruire();
	emetteur_reseau &emetteur() { return *emetteur_; }
	recepteur_reseau &recepteur() { return *recepteur_; }
};

#endif
